//结构体是一个或多个变量的集合，这些变量可以是不同的类型
#include <stdio.h>
#include <string.h>

// 定义学生结构体
struct student {
    char name[50]; // 假设名字不超过49个字符
    int age;
    float score;
};

int main() {
    struct student stu;

    printf("请输入学生姓名：\n");

    // 使用 fgets 读取字符串，注意去掉换行符
    if (fgets(stu.name, sizeof(stu.name), stdin) != NULL) {
        size_t len = strlen(stu.name);
        if (len > 0 && stu.name[len - 1] == '\n') {
            stu.name[len - 1] = '\0';
        }
    } else {
        printf("输入姓名失败。\n");
        return 1;
    }

    printf("请输入学生年龄和成绩：\n");

    // 读取年龄和成绩
    if (scanf("%d %f", &stu.age, &stu.score) != 2) {
        printf("输入年龄和成绩格式错误，请重新运行程序。\n");
        return 1;
    }

    // 清除缓冲区中的剩余字符
    int c;
    while ((c = getchar()) != '\n' && c != EOF);

    printf("学生姓名：%s\n", stu.name);
    printf("学生年龄：%d\n", stu.age);
    printf("学生成绩：%f\n", stu.score);

    return 0;
}

/*
结构体实例：编写一个函数，传入两个int参数，
在函数创建一个结构体point类型的变量，
将传入的两个参数分别赋值给该结构体变量的x和y成员，
并返回该结构体变量。
*/

